#ifndef USER_APP_H
#define USER_APP_H
#include "main.h"

typedef union 
{
    uint32_t buf[128];
    struct 
    {
        float gasConcentration_alarmValue;          //瓦斯浓度报警值
        float hydraulicOilTemperature_alarmValue;   //液压油油温报警值
        float engineWaterTemperature_alarmValue;    //发动机水温报警值
        float engineTemperature_alarmValue;         //发动机表温报警值
        float exhaustGasTemperature_alarmValue;  //发动机排气温度报警值
        float mainPumpPressure_alarmValue;       //主泵压力报警值
        float fanPressure_alarmValue;            //风扇压力报警值
        float brakePressure_alarmValue;          //刹车压力报警值
    }params;
    
}param_t;

typedef enum {
    eWorkNothing,
    eEngineStart,    //
    eEngineStop,     // 发动机停止
    eIsStart,        //启动标志
    eFanIsOpen,      //风扇
    eChooseWorkMode, //工作模式选择
    eAutoForward,    //自动前进
    eAutoRetreat,    //自动后退
    eHandForward,    //手动前进
    eHandRetreat,    //手动后退
    eEmorgency,      //急停
}work_mode_t;
typedef enum {
    eWorkInLocal,
    eWorkInRadio,
    eWorkInRemote,
}work_in_mode_t;

extern uint8_t uc_diModbus_rtu_isValid;
extern uint8_t uc_diModbus_rtu_isValidLast;

extern void di_data_redefine(void);
/**
 * @brief modbus485 rtu 作为主机读取数据
 */
extern void m_modbus_rtu(void);

extern void user_app_run(void);
/**
 * @brief 根据端口电压不同对rs485初始化为不同的波特率
 * 自由协议波特率4800；modbus RTU 波特率是19200
 */
void user_app_rs485_initHandler(void);

void user_app_tick(uint32_t tick);

/**
 * @brief 用户CAN发送，放在100ms任务中
 */
void user_app_can_run(void);
#endif

